package com.woniu.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 数字正则验证工具类
 */
public class NumberRegexValidationUtil {

    /**
     * 自定义
     * @param regex  表达式
     * @param target 要验证的目标
     * @return
     */
    public static boolean isMatch(String regex, String target){
        if (target == null || target.trim().equals("")) {
            return false;
        }
        Pattern pattern = Pattern.compile(regex);
        Matcher isNum = pattern.matcher(target);
        return isNum.matches();
    }


    /**
     * 正整数
     * @param number
     * @return
     */
    public static boolean isPositiveInteger(String number) {
        return isMatch("^[1-9]+\\d*", number);
    }

    /**
     * 负整数
     * @param number
     * @return
     */
    public static boolean isNegativeInteger(String number) {
        return isMatch("^-[1-9]\\d*", number);
    }

    /**
     * 整数
     * @param number
     * @return
     */
    public static boolean isWholeNumber(String number) {
        return isMatch("^0{1}", number) || isPositiveInteger(number) || isNegativeInteger(number);
    }

    /**
     * 正整数或者正小数
     * @param number
     * @return
     */
    public static boolean isPositiveIntegerOrDecimal(String number){
        return isPositiveInteger(number) || isPositiveDecimal(number);
    }

    /**
     * 正小数
     * @param number
     * @return
     */
    public static boolean isPositiveDecimal(String number){
        return isMatch("^[0]{1}.[0-9]*[1-9]$|[1-9]+\\d*.\\d*[1-9]$", number);
    }

    /**
     * 负小数
     * @param number
     * @return
     */
    public static boolean isNegativeDecimal(String number){
        return isMatch("^-[0]{1}.[0-9]*[1-9]$|^-[1-9]+\\d*.\\d*[1-9]$", number);
    }

    /**
     * 小数
     * @param number
     * @return
     */
    public static boolean isDecimal(String number){
        return isPositiveDecimal(number) || isNegativeDecimal(number);
    }


    /**
     * 实数（整数+小数）
     * @param number
     * @return
     */
    public static boolean isRealNumber(String number){
        return isWholeNumber(number) || isDecimal(number);
    }


}
